package offer.easy;

//绳子长度为n，截成m份，其中m与n均大于1，且m小于等于n，且均为整数
//问，如何使m份绳子的乘积最大？
public class CutRope {

    //数学推导式中，接近于e自然对数时，其乘积最大
    //所以，尽可能地将绳子分为2,3的长度
    public static int cutMax(int target) {
        if (target == 2) {
            return 1;
        } else if (target == 3) {
            return 2;
        }
        int num = 1;
        int copies = (target+2)/3;
        if (target%3 == 2) {
            num = (int) (2*Math.pow(3,(double)(copies-1)));
        } else if (target%3 == 1) {
            num = (int) (2*2*Math.pow(3,(double)(copies-2)));
        } else {
            num = (int) Math.pow(3,(double)copies);
        }
        return num;
    }

    public static void main(String[] args) {
        System.out.println(cutMax(3));
    }
}
